package com.yzy.baselibrary.http.converter

import com.google.gson.Gson
import com.google.gson.TypeAdapter
import okhttp3.MediaType
import okhttp3.RequestBody
import okio.Buffer
import retrofit2.Converter
import java.io.OutputStreamWriter
import java.nio.charset.Charset

/**
 *description: 请求转换.
 *@date 2018/11/7 11:49.
 *@author: YinZeYu.
 */
class AbnormalRequestBodyConverter<T>(private val gson: Gson, private val adapter: TypeAdapter<T>) : Converter<T, RequestBody> {
  private val MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8")
  private val UTF_8 = Charset.forName("UTF-8")

  override fun convert(value: T): RequestBody {
    val buffer = Buffer()
    val writer = OutputStreamWriter(buffer.outputStream(), UTF_8)
    val jsonWriter = gson.newJsonWriter(writer)
    adapter.write(jsonWriter, value)
    jsonWriter.close()
    return RequestBody.create(MEDIA_TYPE, buffer.readByteString())
  }
}